package com.fanshe;

import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * 了解类的加载器
 */
public class ClassLoaderTest {

    @Test
    public void test1() {
        //对于自定义类是使用系统类加载器加载
        //系统类加载器加载的
        ClassLoader classLoader = ClassLoaderTest.class.getClassLoader();
        System.out.println(classLoader);

        //ExtClassLoader扩展类加载器，通过getParent()可以获取扩展类加载器
        ClassLoader parent = classLoader.getParent();
        System.out.println(parent);

        //获取引导类加载器
        //引导类加载器主要加载java的核心类库，无法加载自定义类
        ClassLoader parent1 = parent.getParent();
        System.out.println(parent1);

        ClassLoader classLoader1 = String.class.getClassLoader();
        System.out.println(classLoader1);
    }

    /**
     * Properties:用于加载配置文件
     */
    @Test
    public void test2() {
        Properties properties = new Properties();
        try {
            //此时的文件默认在当前的module下。
            //读取配置文件的方式一:
//            FileInputStream fileInputStream = new FileInputStream("application.properties");
//            properties.load(fileInputStream);
//            String user = properties.getProperty("user");
//            System.out.println(user);


            //方式二:
            ClassLoader classLoader = ClassLoaderTest.class.getClassLoader();
            InputStream resourceAsStream = classLoader.getResourceAsStream("application.properties");
            properties.load(resourceAsStream);

            String user1 = properties.getProperty("user");
            System.out.println(user1);

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
